import java.util.Scanner;

public class Program2 {

    public static void main(String[] args) {

        int r,v;
        //r、v为从键盘获得的整数，请写出该段代码，注意类型，假设这里分别输入3和2
        Scanner sc = new Scanner(System.in);
        r = sc.nextInt();
        v = sc.nextInt();

        //以下内容，请新建一个Complex类，表示数学上的复数
        Complex z1 = new Complex(); //数学上的复数，比如3+2i，其中3表示实部，2表示虚部
        z1.setRealPart(r);  //假设之前输入3和2，这里则是设置该复数的实部为3
        z1.setVirtualPart(v); //假设之前输入3和2，这里则是设置该复数的虚部为2
        System.out.println("z1=" + z1); //输出3+2i这样的样式

        Complex z2 = new Complex(45,9); //45+9i,带参构造函数
        System.out.println("z2=" + z2); //输出3+2i这样的样式

        //设z1=a+bi，z2=c+di是任意两个复数，则它们的和是 (a+bi)+(c+di)=(a+c)+(b+d)i
        Complex z3 = z1.add(z2);//复数相加，公式为实部相加，虚部相加
        System.out.printf("%s+%s=%s\n",z1, z2, z3);

        //设z1=a+bi，z2=c+di是任意两个复数，那么它们的积(a+bi)(c+di)=(ac-bd)+(bc+ad)i
        Complex z4 = z1.mul(z2);//复数相乘
        System.out.printf("%s*%s=%s\n",z1, z2, z4);


        //以下内容，请新建一个Card类，表示扑克牌中的任意一张 ,包含花色：♠ ♥ ■ ♣，点数：3-10、J、Q、K、A、2,（这里简单处理，去掉大小王）
        //这里注意点数我们这里简化设计为int，所以J对应11，Q对应12，K对应13，A对应1,2就对应2，其实这里更合理应该使用枚举类型，但考虑枚举很多人不会用，我们暂且设计为int
        //这里特别注意，因为类库中某个包下是有Card类的，所以大家不要随便点击Card的波浪线去import修复错误，那样eclipse帮你导入了一个类库的包，这不是我们想要的
        Card c1 = new Card();//空参构造函数
        c1.setRank(4);
        c1.setSuit("♥");//红心4
        System.out.println(c1);//输出"红心4"字样

        Card c2 = new Card(8, "■");//带参构造函数, 方块A
        System.out.println(c2);//输出"方块A"字样

        //比较两张牌，大小顺序是点数3-10、J、Q、K、A、2逐渐变大，和花色无关
        if(c1.compare(c2)>0)
        {
            System.out.printf("%s比%s大",c1,c2);
            System.out.println();
        }
        else if(c1.compare(c2)<0)
        {
            System.out.printf("%s比%s小",c1,c2);
            System.out.println();
        }
        else
        {
            System.out.printf("%s和%s一样大",c1,c2);
            System.out.println();
        }

        Card c3 = new Card(8,"♥");
        if(c2.isPair(c3)) //是一对牌，只要点数相同就是一对牌
        {
            System.out.printf("%s和%s是一对%d",c2,c3, c2.getRank());
            System.out.println();
        }
        else
        {
            System.out.printf("%s的点数是%d,%s的点数是%d,不是一对牌",c2, c2.getRank(),c3, c3.getRank());
        }

        //扑克牌中的炸，包括四个相同点数、花色不同的牌、5-10-K两种情况都是炸
        Card[] cs1 = new Card[3];
        cs1[0] = new Card(5,"♥");
        cs1[1] = new Card(10,"♥");
        cs1[2] = new Card(13,"♥");//K
        if(Card.isBombing(cs1))//5-10-K是炸,注意这个判定函数是Card的静态函数，点前面是类名
        {
            System.out.println("这个数组中的牌构成炸弹");
        }
        else
        {
            System.out.println("这个数组中的牌不能构成炸弹");
        }

        Card[] cs2 = new Card[4];
        cs2[0] = new Card(5,"♥");
        cs2[1] = new Card(5,"■");
        cs2[2] = new Card(5,"♠");
        cs2[3] = new Card(5,"♣");

        //四张点数相同、花色不同的牌是炸,注意这个判定函数是Card的静态函数，点前面是类名
        if(Card.isBombing(cs2))
        {
            System.out.println("这个数组中的牌构成炸弹");
        }
        else
        {
            System.out.println("这个数组中的牌不能构成炸弹");
        }

    }

}
